import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;

public class MyQueue {
    private Stack<Integer> s1;
    private Stack<Integer> s2;

    public MyQueue() {
        s1 = new Stack<>();
        s2 = new Stack<>();
    }

//    入队列 = 入第一个栈
    public void push(int x) {
        s1.push(x);
    }

//    出队列 = 出第二个栈的栈顶元素，如果栈为空，就需要将第一个栈的元素全都给第二个栈
    public int pop() {
        if (!s2.empty()){
            return s2.pop();
        }
//        栈为空
        while(!s1.empty()){
            s2.push(s1.pop());
        }
        return s2.pop();
    }

    public int peek() {
        if (!s2.empty()){
            return s2.peek();
        }
        while(!s1.empty()){
            s2.push(s1.pop());
        }
        return s2.peek();
    }

    public boolean empty() {
        if (s1.empty()&& s2.empty()){
            return true;
        }
        return false;
    }
}
